<template>
    <div>
        <div class="cell">{{phone| star('phone')}}</div>
        <div class="cell">
            <input
                placeholder="输入验证码"
                v-model="code"
                type="number"
                pattern="[0-9]*"
                onkeypress='return( /[\d]/.test(String.fromCharCode(event.keyCode) ) )'
            />
            <div
                class="send"
                @click="send"
            >{{codetxt}}</div>
        </div>
        <div class="ask">收不到短信？请咨询客服</div>
        <div
            class="sure"
            @click="toChange"
        >下一步</div>
        <div v-show="stateScreat">
            <div class="ask">您可以使用新的手机号去设置密码</div>
            <div
                class="sure"
                @click="changePhone"
            >更换手机号</div>
        </div>
        <confirm
            title="提示"
            text="您还没有实名认证，是否进行实名认证"
            confirmBtnText="去设置"
            cancelBtnText="否"
            ref="confirm2"
            @confirm="confirm"
        ></confirm>
    </div>
</template>

<script>
import API from '../../request/api';
import { Toast } from 'vant';
import confirm from '../../components/common/confirm';

export default {
    data() {
        return {
            phone: this.$store.state.login.userInfo.phone,
            code: '',
            codetxt: '发送验证码', // 验证码校验文本
            stateSendCode: true,
            stateReal: true,
            stateScreat: false
        };
    },
    components: { confirm },
    computed: {},
    watch: {
        // 监听具体数据变化，并做相应的处理
    },
    methods: {
        changePhone() {
            //去更换手机号，就是直接设置手机号
            //    先发请求去获取token
            this.request.post(API.boosChange).then((res) => {
                if (res.access_token) {
                    // 获取到token了去改密码
                    this.$router.push({
                        name: 'newPhone',
                        query: {
                            type: '4',
                            token: res.access_token
                        }
                    });
                }
                console.log();
            });
        },
        toChange() {
            if (this.code.length !== 6) {
                Toast('验证码请输入6位');
                this.code = '';
            } else if (this.code === '' || this.stateSendCode) {
                Toast('请先获取并填写验证码');
            } else if (!this.stateReal) {
                Toast('您还没有实名认证');
                return false;
            } else {
                let data = {
                    code: this.code,
                    type: this.$route.query.type
                };
                this.request.post(API.phoneVerify, data).then(res => {
                    // 根据type不同来做不同处理4切换绑定手机号，8解冻账号
                    if (this.$route.query.type === '8') {
                        this.request.post(API.thawUser, { token: res.access_token }).then((res) => {
                            // 解冻账号
                            Toast('账号解冻成功');
                            this.$router.push({
                                name: 'user'
                            });
                        });
                    } else if (this.$route.query.type === '5') {
                        //    去修改安全密码页面
                        this.$router.push({
                            name: 'newPassword',
                            query: {
                                token: res.access_token,
                                type: this.$route.query.type,
                                direct: this.$route.query.direct,
                            }
                        });
                    } else if (this.$route.query.type === '3') {
                        // 去修改登录密码
                        this.$router.push({
                            name: 'newPassword',
                            query: {
                                token: res.access_token,
                                type: this.$route.query.type,
                            }
                        });
                    } else if (this.$route.query.type === '6') {
                        // 去设置支付密码
                        this.$router.push({
                            name: 'newPassword',
                            query: {
                                token: res.access_token,
                                type: this.$route.query.type,
                                direct: this.$route.query.direct
                            }
                        });
                    } else {
                        let router = this.$route.query.type === '4' ? 'newPhone' : 'newPassword';
                        this.$router.push({
                            name: router,
                            query: {
                                type: this.$route.query.type,
                                token: res.access_token,
                                direct: this.$route.query.direct,
                            }
                        });
                    }
                }, (res) => {
                    console.log(res);
                });
            }
        },
        send() {
            let data = {
                type: this.$route.query.type
            };
            if (this.stateSendCode) {
                this.request.post(API.getCode, data).then(res => {
                    //    验证码发送成功
                    this.stateSendCode = false;
                    this.setTime();
                }, (res) => {
                    console.log(res);
                });
            }
        },
        setTime() {
            //    倒计时
            let demo = 70;
            this.codetxt = demo;
            let setTer = setInterval(() => {
                if (demo > 0) {
                    this.codetxt = demo;
                    demo--;
                } else {
                    clearInterval(setTer);
                    this.codetxt = '发送验证码';
                    this.stateSendCode = true;
                }
            }, 1000);
        },
        confirm() {
            //    跳转实名认证
            let type = this.$route.query.type;
            if (type === '4') {
                this.$store.commit('forCertification', 'phone');
                this.$router.push({
                    name: 'certification',
                    query: {
                        type: type
                    }
                });
            } else if (type === '3') {
                this.$store.commit('forCertification', 'login');
                this.$router.push({
                    name: 'certification',
                    query: {
                        type: type
                    }
                });
            } else if (type === '5') {
                this.$store.commit('forCertification', 'change');
                this.$router.push({
                    name: 'certification',
                    query: {
                        type: type
                    }
                });
            } else if (type === '6') {
                this.$store.commit('forCertification', 'set');
                this.$router.push({
                    name: 'certification',
                    query: {
                        type: type
                    }
                });
            }
            // this.stateReal = true;
            // this.$store.commit('forCertification', 'set');
            // this.$router.push({
            //     name: 'certification',
            //     query: {
            //         type: val
            //     }
            // });
        },
        checkImgCode() {
            // codeSrc: `${baseUrl}/${API.codeSrc}?phone=${this.$store.state.login.userInfo.realphone}`, // 图形吗链接

        }
    },
    beforeCreate() {
        // 可以在这加个loading事件，在加载实例时触发
        // 这个阶段实例的data、methods是读不到的
    },
    created() {

        let type = this.$route.query.type;
        let state = this.$route.query.state;
        // 如果是设置密码type=4,state=true就把实名认证先关了
        if (type == '3' && state) {
            //    修改绑定手机号，先查一下是否还过手机号来决定是否显示换手机号按钮
            this.request.post(API.canPhoneChange).then((res) => {
                console.log(res, '撒旦大苏打似的啊实打实的阿斯顿阿萨打死');
                if (res.ischangephone == 0) {
                    //     没修改过
                    this.stateScreat = true;
                }
            });
        } else {
            // 检查实名认证
            this.request.get(API.isCertify).then(res => {
                // certification 1认证过0未认证
                if (res.certification === '0') {
                    //    未认证
                    //    认证弹窗
                    this.stateReal = false;
                    this.$refs.confirm2.show();
                } else if (res.certification === '1') {
                    // 已认证，
                    // 查看是否设置安全密码
                    // isSecurity
                    if (type == '6') {
                        // 用户想要设置安全密码的时候才会判断
                        this.request.get(API.isSecurity).then((res) => {
                            if (res.exists == 1) {
                                Toast('您已设置安全密码');
                            }
                        });
                    }
                } else {
                    Toast('实名认证返回数据错误');
                }
                console.log(res.certification, 'SaaS');
            });
        }
        // 初始化数据，如在这结束loading事件，异步ajax请求也适宜在这里调用
        // 实例创建后：这个阶段已经完成了数据观测(data observer)，属性和方法的运算， watch/event 事件回调。
        // mount挂载阶段还没开始，"el" 属性目前不可见，数据并没有在DOM元素上进行渲染
    },
    beforeMount() {
        // 相关的 render 函数首次被调用。
    },
    mounted() {
        // 挂载元素，获取到DOM节点
        // el选项的DOM节点 被新创建的 vm的el 替换，并挂载到实例上去之后调用此生命周期函数。此时实例的数据在DOM节点上进行渲染
    },
    beforeUpdate() {
        // 数据更新时调用，但不进行DOM重新渲染，在数据更新时DOM没渲染前可以在这个生命函数里进行状态处理
    },
    updated() {
        //  如果对数据统一处理，在这里写上相应函数
        // 这个状态下数据更新并且DOM重新渲染，当这个生命周期函数被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。当实例每次进行数据更新时updated都会执行
    },
    beforeDestroy() {
        // 可以做一个确认停止事件的确认框
    },
    destroyed() {
        // Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，所有的事件监听器会被移除，所有的子实例也会被销毁
    }
};

</script>

<style scoped lang="stylus" rel="stylesheet/stylus">
@import '~assets/main.styl';

.cell {
    cell();

    .send {
        background-color: main-color;
        color: grayF;
        position: absolute;
        right: 0;
        width: vw(130);
        text-align: center;
    }

    img {
        position: absolute;
        right: 0;
        width: vw(120);
        height: vw(45);
    }
}

.ask {
    color: gray9;
    margin-top: smallMargin;
    margin-right: smallMargin;
    text-align: right;
    font-size: vw(12);
}

.sure {
    btn-sta();
}
</style>
